package com.dtx.mediator;

import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

/**
 * ColleagueCheckBox类是java.awt.Checkbox的子类。在示例程序中,我们将其作为单选按钮使用,而没有将其作为勾选框使用(使用CheckboxGroup)。
 * 该类实现了java.awt.event.ItemListener接口,这是因为我们希望通过ItemSateChanged方法来捕捉单选按钮的状态变化。
 */
public class ColleagueCheckBox extends Checkbox implements ItemListener,Colleague {

    private Mediator mediator;

    /**
     * 构造函数
     * @param caption
     * @param group
     * @param state
     */
    public ColleagueCheckBox(String caption, CheckboxGroup group,boolean state){
        super(caption,group,state);
    }

    /**
     * 保存Mediator
     * @param mediator
     */
    @Override
    public void setMediator(Mediator mediator) {
        this.mediator = mediator;
    }

    /**
     * Mediator下达启用/禁用指示
     * @param enabled
     */
    @Override
    public void setColleagueEnabled(boolean enabled) {
        setEnabled(enabled);
    }

    /**
     * 当状态发生变化时通知Mediator
     * @param e
     */
    @Override
    public void itemStateChanged(ItemEvent e) {
        mediator.colleagueChanged();
    }
}
